<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  <title>Pyarmor</title>

  <link rel="stylesheet" href="css/bootstrap.min.css" type="text/css" />
  <style type="text/css">
    .toolbar {
      margin: 10px 15px 10px 15px;
      position: absolute;
      right: 0;
      top: 0;
    }
    .tab-pane > div.content {
      padding: 0 1em;
    }
    #global-message {
      position: absolute;
      left: 0;
      right: 0;
      top: 50px;
      z-index: 1;
    }
    #project-basic .panel-body { padding-bottom: 5px; }
  </style>

  <script type="text/javascript" src="js/jquery.min.js"></script>
  <script type="text/javascript" src="js/bootstrap.min.js"></script>
  <script data-main="app" src="js/require.js"></script>
  <script type="text/javascript">
  </script>
</head>

<body role="document">
  <nav role="navigation" class="navbar navbar-default">
    <div class="container-fluid">
      <div class="navbar-header">
        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-main-tab" aria-expanded="false">
          <span class="sr-only">Toggle navigation</span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
        </button>
        <a class="navbar-brand" href="https://github.com/dashingsoft/pyarmor">Pyarmor</a>
      </div>
      <!-- /.navbar-header -->
      <div class="collapse navbar-collapse" id="navbar-main-tab">
        <ul class="nav navbar-nav">
          <li role="presentation"><a href="#home" aria-controls="home" role="tab" data-toggle="tab">Home</a></li>
          <li role="presentation" class="active"><a href="#project" aria-controls="project" role="tab" data-toggle="tab">Project</a></li>
          <li role="presentation"><a href="#documentation" aria-controls="documentation" role="tab" data-toggle="tab">Tutorial</a></li>
          <li role="presentation"><a href="#purchase" aria-controls="purchase" role="tab" data-toggle="tab">Purchase</a></li>
          <!-- <li role="presentation"><a href="#settings" aria-controls="settings" role="tab" data-toggle="tab">Settings</a></li> -->
          <li role="presentation"><a href="#about" aria-controls="about" role="tab" data-toggle="tab">About</a></li>
        </ul>
      </div>
      <!-- /.navbar-collapse -->
    </div>
    <!-- /.container-fluid -->
  </nav>

  <div id="global-message"></div>

  <!-- Tab panes -->
  <div class="tab-content">
    <div role="tabpanel" class="tab-pane" id="home">
      <div class="toolbar">
        <a type="button" class="btn btn-success" href="index-zh.html">中文版</a>
      </div>
      <div class="content">
        <p>Pyarmor is a tool used to import or run encrypted python scripts.</p>
        <h4 id="main-features">Main Features</h4>
        <ul>
          <li>Run encrypted script or import encrypted module</li>
          <li>Run or import encrypted compiled python files (.pyc, .pyo)</li>
          <li>Mixed encrypted files with normal python files.</li>
          <li>Expire encrypted files</li>
          <li>Bind encrypted files to harddisk</li>
        </ul>
        <h4 id="support-platforms">Support Platforms</h4>
        <ul>
          <li><p>Python 2.5, 2.6, 2.7 and Python3</p></li>
          <li><p>Prebuilt Platform: win32, win_amd64, linux_i386, linux_x86_64, darwin_x86_64</p></li>
        </ul>
        <h4 id="quick-start">Quick Start</h4>
        <ul>
          <li><p>Download <a href="https://github.com/dashingsoft/pyarmor/releases/download/v3.1.4/pyarmor-webapp.zip">pyarmor-webapp.zip</a></p></li>
          <li><p>Extract it to any path, for example, <em>/opt</em></p></li>
          <li><p>Enter <em>/opt/pyarmor/webapp</em>, double click <strong>start-server.bat</strong> (For Windows) or <strong>start-server.sh</strong> (For Linux)</p></li>
          <li><p>A webpage will open in web browser at the same time, do the following steps in this web page:</p>
            <ul>
              <li>Click tab <strong>Project</strong></li>
              <li>Type absolute path of python source files in <strong>Base Path</strong>, for example, <em>/opt/pyarmor/src/examples</em></li>
              <li>Type <strong>Startup Script</strong></li>
              <li>Type <strong>Build Path</strong>, for example, <em>/opt/pyarmor/webapp/build</em></li>
              <li>Click button <strong>Encrypt</strong></li>
              <li>All the encrypted files would be save in <em>/opt/pyarmor/build</em>, enter this path</li>
            </ul>
          </li>
          <li>Run encrypted script with command: <code>python queens.py</code></li>
        </ul>
        <h4 id="license">License</h4>
        <p>Pyarmor is published as shareware. Free trial version that never expires, the limitation is</p>
        <ul>
          <li>Project Capsule generated by trial version is NOT random, but FIXED by hardcode.</li>
        </ul>
        <p>A registration code is required to generate random project capsule.</p>
        <ul>
          <li>Personal user: one registration code is enough.</li>
          <li>Company user: one registration code is only used for one project/product.</li>
        </ul>
      </div>
    </div>
    <!-- /.tab-pane -->
    <div role="tabpanel" class="tab-pane active" id="project">
      <div class="toolbar">
        <button id="new-project" type="button" class="btn btn-success" title="New project">New</button>
        <button id="open-project" type="button" class="btn btn-default" title="Open project">Open</button>
        <button id="save-project" type="button" class="btn btn-default" title="Save project">Save</button>
        <button id="build-project" type="button" class="btn btn-default" title="Encrypt all files in project">Encrypt</button>
        <!-- <h4><span class="label label-warning">Demo Version</span></h4> -->
        <button id="demo-button" type="button" class="btn btn-warning hidden">Demo Version</button>
      </div>
      <div class="container-fluid">
        <div class="row">
          <div class="col-sm-2">
            <ul class="nav nav-pills nav-stacked">
              <li role="presentation" class="active"><a href="#project-basic" aria-controls="project-basic" role="tab" data-toggle="pill">Basic</a></li>
              <li role="presentation"><a href="#project-advanced" aria-controls="project-advanced" role="tab" data-toggle="pill">Advanced</a></li>
              <li role="presentation"><a href="#project-licenses" aria-controls="project-licenses" role="tab" data-toggle="pill">Licenses</a></li>
              <li role="presentation"><a href="#project-console" aria-controls="project-console" role="tab" data-toggle="pill">Console</a></li>
            </ul>
          </div>
          <!-- /.col-sm-2 -->
          <div class="col-sm-10">
            <div class="tab-content">
              <div role="tabpanel" class="tab-pane active" id="project-basic">
                <div class="panel panel-default">
                  <div class="panel-heading">Project Infromation</div>
                  <div class="panel-body">
                    <form>
                      <div class="form-group hidden">
                        <label for="input_project_name">Name</label>
                        <input type="text" class="form-control" id="input_project_name"/>
                      </div>
                      <div class="form-group">
                        <label for="input_project_title">Title</label>
                        <input type="text" class="form-control" id="input_project_title"/>
                      </div>
                      <div class="form-group hidden">
                        <label for="input_project_capsule">Capsule</label>
                        <input type="text" class="form-control" id="input_project_capsule" placeholder="Project Capsule Filename" disabled/>
                        <p class="help-block">It will be generated when new project and can not be changed.</p>
                      </div>
                      <div class="form-group hidden">
                        <label for="input_project_description">Description</label>
                        <textarea class="form-control" rows="5" id="input_project_description"></textarea>
                      </div>
                      <div class="form-group">
                        <label for="input_source_path">Base Path</label>
                        <input type="text" class="form-control" id="input_project_path"/>
                        <p class="help-block">Required. Absolute path in local machine used by MANIFEST.in to search files.</p>
                      </div>
                      <div class="form-group">
                        <label for="input_project_files">MANIFEST.in</label>
                        <textarea class="form-control" rows="3" id="input_project_files"></textarea>
                        <p class="help-block">Optional. Following the Distutils’ own manifest template, all these files will be encrypted.</p>
                      </div>
                      <div class="form-group">
                        <label for="input_project_scripts">Startup Script</label>
                        <input type="text" class="form-control" id="input_project_scripts"/>
                        <p class="help-block">Optional. </p>
                      </div>
                      <div class="form-group">
                        <label for="input_build_path">Build Path</label>
                        <input type="text" class="form-control" id="input_build_path"/>
                        <p class="help-block">Optional. If not blank, encrypted scripts will be saved here, otherwise <strong>Base Path</strong></p>
                      </div>
                    </form>
                  </div>
                  <!-- /.panel-body -->
                </div>
                <!-- /.panel-default -->
              </div>
              <!-- /.tab-pane -->
              <div role="tabpanel" class="tab-pane" id="project-advanced">
                <div class="panel panel-default">
                  <div class="panel-heading">How to generate encrypted scripts</div>
                  <div class="panel-body">
                    <form>
                      <div class="has-warning">
                        <div class="checkbox">
                          <label>
                            <input type="checkbox" id="input_project_clean" value=""/>
                            <strong>Remove source files after enrypt successfully.</strong>
                          </label>
                          <p class="help-block"></p>
                        </div>
                      </div>
                      <div class="form-group">
                        <label for="input_project_target">Run encrypted scripts in other platform</label>
                        <select class="form-control" id="input_project_target">
                          <option></option>
                          <option>win32</option>
                          <option>win_amd64</option>
                          <option>linux_i386</option>
                          <option>linux_x86_64</option>
                          <option>darwin_x86_64</option>
                        </select>
                        <p class="help-block">Leave it blank if it's same with current platform.</p>
                      </div>
                      <div class="form-group">
                        <label for="input_project_default_license">Run encrypted scripts in which license</label>
                        <select class="form-control" id="input_project_default_license">
                          <option value="">Run in any machine and never expired</option>
                        </select>
                        <p class="help-block">Click tab <strong>Licenses</strong> to generate available project licenses</p>
                      </div>
                    </form>
                  </div>
                  <!-- /.panel-body -->
                </div>
                <!-- /.panel-default -->
              </div>
              <!-- /.tab-pane -->
              <div role="tabpanel" class="tab-pane" id="project-licenses">
                <div class="panel panel-default">
                  <div class="panel-heading">Generate project license for special user</div>
                  <div class="panel-body">
                    <form>
                      <div class="form-group">
                        <label for="input_bind_harddisk">
                          <div class="checkbox">
                            <label>
                              <input type="checkbox" id="check_bind_harddisk" value=""/>Run encrypted scripts in special machine, type harddisk serial number of target machine
                            </label>
                          </div>
                        </label>
                        <input type="text" class="form-control" id="input_bind_harddisk" disabled />
                      </div>
                      <div class="form-group">
                        <label for="input_expired_date">
                          <div class="checkbox">
                            <label>
                              <input type="checkbox" id="check_expired_date" value=""/>Expire encrypted scripts at some point, type expired date (YYYY-MM-NN)
                            </label>
                          </div>
                        </label>
                        <input type="text" class="form-control" id="input_expired_date" disabled/>
                      </div>
                      <div class="form-group">
                        <label for="input_license_rcode">Registration Code</label>
                        <input type="text" class="form-control" id="input_license_rcode"/>
                        <p class="help-block">Any string, for example, 'mycustomer-01'. Note that it will be <strong>IGNORED</strong> if any of checkbox above is checked.</p>
                      </div>
                      <div class="form-group">
                        <label for="input_available_licenses">Available Licenses</label>
                        <select class="form-control" id="input_project_licenses" multiple readonly></select>
                      </div>
                      <button type="button" class="btn btn-default" id="new-license">Generate</button>
                      <button type="button" class="btn btn-default pull-right" id="remove-license">Remove</button>
                    </form>
                  </div>
                  <!-- /.panel-body -->
                </div>
                <!-- /.panel-default -->
              </div>
              <!-- /.tab-pane -->
              <div role="tabpanel" class="tab-pane" id="project-console">
                <div>
                  <form>
                    <div class="form-group">
                      <!-- <label for="project-log-message">Log message</label> -->
                      <textarea class="form-control" rows="20" id="project-log-message" readonly></textarea>
                    </div>
                    <a id="clear-log-message" role="button" class="btn btn-default">Clear</a>
                  </form>
                </div>
                <!-- /.panel-default -->
              </div>
              <!-- /.tab-pane -->
            </div>
            <!-- /.tab-content -->
          </div>
          <!-- /.col-md-10 -->
        </div>
        <!-- /.row -->
      </div>
      <!-- /.container-fluid -->
    </div>
    <!-- /.tab-pane -->
    <div role="tabpanel" class="tab-pane" id="documentation">
      <div class="content">tutorial.html</div>
    </div>
    <div role="tabpanel" class="tab-pane" id="purchase">
      <div class="content">
        <p>You're using trail version. Free trial version that never expires, but project capsule generated is fixed by hardcode, so all the encrypted files are encrypted by same key.</p>
        <p>A registration code is required to generate random project capsule. If Pyarmor is helpful for you, please purchase one by visiting</p>
        <p><a href="https://shopper.mycommerce.com/checkout/cart/add/55259-1">https://shopper.mycommerce.com/checkout/cart/add/55259-1</a></p>
        <p>After you have received a registration code, just replace the content of "license.lic" with registration code only (no newline).</p>
        <p><strong>The registration code is valid forever, it can be used permanently.</strong></p>
        <p>Enjoy it!</p>
      </div>
    </div>
    <div role="tabpanel" class="tab-pane" id="settings">
      Settings
    </div>
    <div role="tabpanel" class="tab-pane" id="about">
      <div class="content">
        <p id="version-info">Pyarmor Version</p>
        <table class="table">
          <tr>
            <td><strong>Homepage:</strong></td>
            <td><a href="http://www.dashingsoft.com">http://www.dashingsoft.com</a></td>
          </tr>
          <tr>
            <td><strong>Source:</strong></td>
            <td><a href="https://github.com/dashingsoft/pyarmor">https://github.com/dashingsoft/pyarmor</a></td>
          </tr>
          <tr>
            <td><strong>PyPI:</strong></td>
            <td><a href="https://pypi.python.org/pypi/pyarmor">https://pypi.python.org/pypi/pyarmor</a></td>
          </tr>
          <tr>
            <td><strong>Report Issues:</strong></td>
            <td><a href="https://github.com/dashingsoft/pyarmor/issues">https://github.com/dashingsoft/pyarmor/issues</a></td>
          </tr>
          <tr>
            <td><strong>Support Email:</strong></td>
            <td><a href="mailto:jondy.zhao@gmail.com">jondy.zhao@gmail.com</a></td>
          </tr>
        </table>
        <p>Any question feel free to email: <a href="mailto:jondy.zhao@gmail.com">jondy.zhao@gmail.com</a></p>
      </div>
      <!-- /.content -->
    </div>
    <!-- /.tab-pane -->
  </div>
  <!-- /.tab-content -->
  <div class="modal fade" id="project-manage-modal" tabindex="-1" role="dialog" aria-labelledby="ProjectModalLabel">
    <div class="modal-dialog" role="document">
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
          <h4 class="modal-title" id="ProjectModalLabel">Projects</h4>
        </div>
        <div class="modal-body">
          <form>
            <div class="form-group">
              <select class="form-control" id="project-manage-list" size="9" multiple required></select>
            </div>
          </form>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default pull-left" id="project-manage-remove">Remove</button>
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
          <button type="button" class="btn btn-primary" id="project-manage-open">Open</button>
        </div>
      </div>
      <!-- /.modal-content -->
    </div>
    <!-- /.modal-dialog -->
  </div>
  <!-- /.modal -->

</body>
</html>
